home *** CD-ROM | disk | FTP | other *** search
/ Zine 9 / Zine - Issue 09 (1991-06)(Brainstorm).adf / sources / stc_normal.s < prev    next >
Text File  |  2022-11-05  |  3KB  |  150 lines

  1. ;
  2. ;decruncher v1.4
  3. ;   for
  4. ;Stone Cracker v2.6a/v2.70/v2.71
  5. ;
  6. ;(c) 1990 Mr.Spiv of Cave
  7. ;
  8. ;
  9.  
  10. st:        movem.l    d0-d7/a0-a6,-(sp)
  11. colour:        lea    $dff006,a6
  12.         moveq    #0,d7
  13.         moveq    #0,d6
  14.         moveq    #0,d5
  15.         move.b    3+data(pc),d7        ;sijoita bittiteho
  16.         move.b    16+data(pc),d5        ;sijoita scanteho
  17.         move.b    17+data(pc),d6        ;sijoita normteho
  18.         lea    18+data(pc),a0
  19.         add.l    12+data(pc),a0        ;crunched lenght (pass3)
  20.         move.l    2+workend(pc),a1    ;
  21.         move.l    a1,a2
  22.         sub.l    4+data(pc),a2        ;sub pass2 crunched lenght
  23.         lea    getnew(pc),a5
  24.         lea    rorit(pc),a4
  25.         move.l    -(a0),d0
  26.  
  27. decrunchloop:    moveq    #0,d1
  28.         add.l    d0,d0
  29.         bne.s    no_ovl1
  30.         jsr    (a5)
  31. no_ovl1:    bcc.L    header_0
  32.         add.l    d0,d0
  33.         bne.s    no_ovl2
  34.         jsr    (a5)
  35. no_ovl2:    bcs.s    header_1xx
  36.         moveq    #8-1,d3            ;header 10
  37.         moveq    #2-1,d4
  38.         bra.s    header_110
  39. header_1xx:    addx.w    d1,d1
  40.         add.l    d0,d0
  41.         bne.s    no_ovl3
  42.         jsr    (a5)
  43. no_ovl3:    addx.w    d1,d1            ;
  44.         moveq    #9-1,d3
  45.         moveq    #3-1,d4
  46.         cmp.w    #2,d1
  47.         beq.s    header_110
  48.         moveq    #10-1,d3        ;header 1+11
  49.         addq.w    #1,d4
  50. header_110:    jsr    (a4)
  51. copyloop:    move.b    -1(a1,d2.w),-(a1)
  52.         dbf    d4,copyloop
  53.  
  54. continue:    cmp.l    a1,a2
  55.         blo.s    decrunchloop
  56. workstart:    lea    $30000,a0        ;
  57. workend:    lea    $50000,a2        ;
  58.         move.l    a0,a3
  59.         move.b    0+data(pc),d0        ;get pass2 values
  60.         move.b    1+data(pc),d1        ;
  61.         move.b    2+data(pc),d2        ;
  62.         add.l    8+data(pc),a3        ;uncrunched lenght
  63. byteback:    moveq    #0,d7
  64.         move.b    (a1)+,d4
  65.         cmp.b    d0,d4
  66.         beq.s    byte1
  67.         cmp.b    d1,d4
  68.         beq.s    byte2
  69. test2:        move.b    d4,(a0)+
  70.         bra.s    test
  71.  
  72. byte1:        move.b    (a1)+,d5
  73.         beq.s    test2
  74.         move.b    (a1)+,d4
  75.         bra.s    repeat
  76.  
  77. byte2:        move.b    (a1)+,d5
  78.         beq.s    test2
  79.         move.b    d2,d4
  80. repeat:        move.b    d5,d7
  81.         addq.w    #2-1,d7
  82. repeatloop:    move.b    d4,(a0)+
  83.         dbf    d7,repeatloop
  84. test:        move.w    (a6),$17a(a6)
  85.         cmp.l    a3,a0
  86.         blo.s    byteback
  87. clsrest:    cmp.l    a2,a0        ;bra.s    run    ;if no clearing
  88.         bhs.s    run
  89.         move.w    (a6),$17a(a6)
  90.         clr.b    (a0)+
  91.         bra.s    clsrest
  92. run:        movem.l    (sp)+,d0-d7/a0-a6
  93. jump:        jmp    $30000
  94.  
  95.         dc.b    "-StoneCracker by Mr. Spiv of CAVE-"
  96.  
  97. header_0:    add.l    d0,d0
  98.         bne.s    no_ovl5
  99.         jsr    (a5)
  100. no_ovl5:    bcc.s    header_00
  101.         addx.w    d1,d1
  102.         add.l    d0,d0
  103.         bne.s    no_ovl6
  104.         jsr    (a5)
  105. no_ovl6:    addx.w    d1,d1
  106.         cmp.w    #2,d1
  107.         beq.s    normaldata
  108.         move.w    d5,d3        ;scan teho
  109.         jsr    (a4)
  110.         move.w    d2,d4
  111.         addq.w    #5-1,d4
  112. bittikpl:    move.w    d7,d3        ;bitti teho
  113.         bra.L    header_110
  114.  
  115. normaldata:    move.w    d6,d3        ;norm teho
  116.         jsr    (a4)
  117.         addq.w    #8-1,d2
  118.         move.w    d2,d4
  119.         bra.s    getbytes
  120.  
  121. header_00:    moveq    #3-1,d3
  122.         jsr    (a4)
  123.         move.w    d2,d4
  124.         subq.w    #1,d4
  125.         and.w    #$0007,d4
  126.  
  127. getbytes:    moveq    #8-1,d3
  128.         jsr    (a4)
  129.         move.b    d2,-(a1)
  130.         dbf    d4,getbytes
  131.         bra.L    continue
  132.  
  133. getnew:        move.l    -(a0),d0        ;jsr (a5)
  134.         move.w    (a6),$17a(a6)
  135.         move.w    #$0010,ccr
  136.         addx.l    d0,d0
  137.         rts
  138.  
  139. rorit:        moveq    #0,d2            ;jsr (a4)
  140. rorloop:    add.l    d0,d0
  141.         bne.s    no_ovl7
  142.         jsr    (a5)
  143. no_ovl7:    addx.w    d2,d2
  144.         dbf    d3,rorloop
  145.         rts
  146.  
  147. ;---------------------------------------------------------
  148. data:
  149.  
  150.